home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F87895_ObjectModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-03-22  |  4.9 KB  |  267 lines

  1. package com.ibm.ivj.testpilot.model;
  2.  
  3. import com.ibm.ivj.testpilot.utils.ClassUtils;
  4. import com.ibm.ivj.testpilot.utils.ObjectUtils;
  5. import java.lang.reflect.Array;
  6.  
  7. public abstract class ObjectModel extends MemberModel {
  8.    private static String copyright = "Licensed Material - Property of IBM IBM(R) VisualAge(R) for Java(TM), Version 3.5 (C) Copyright IBM Corp. 1997, 2000- All Rights Reserved. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.";
  9.    private MemberModel[] members = null;
  10.    private FieldSetModel fields = null;
  11.    private PropertySetModel properties = null;
  12.    private MethodSetModel methods = null;
  13.    private MemberModel superClasses = null;
  14.  
  15.    protected ObjectModel(MemberModel var1) {
  16.       super(var1);
  17.    }
  18.  
  19.    protected ObjectModel(MemberModel var1, String var2) {
  20.       super(var1, var2);
  21.    }
  22.  
  23.    protected ArrayElementModel constructArrayElementFor(MemberModel var1, int var2, Class var3) {
  24.       return new ArrayElementModel(this, var2, var3);
  25.    }
  26.  
  27.    protected boolean currentlyAllowsMembers() {
  28.       return true;
  29.    }
  30.  
  31.    public Class getActualType() {
  32.       Object var1 = this.getObject();
  33.       return var1 != null ? var1.getClass() : ((MemberModel)this).getDeclaredType();
  34.    }
  35.  
  36.    public MemberModel[] getArrayMembers() {
  37.       ArrayElementModel[] var1 = null;
  38.       if (this.isArray()) {
  39.          Object var2 = this.getObject();
  40.          Class var3 = ((MemberModel)this).getType().getComponentType();
  41.          if (var2 != null) {
  42.             int var5 = Array.getLength(var2);
  43.             var1 = new ArrayElementModel[var5];
  44.  
  45.             for(int var4 = 0; var4 < var5; ++var4) {
  46.                var1[var4] = this.constructArrayElementFor(this, var4, var3);
  47.             }
  48.          } else {
  49.             var1 = new ArrayElementModel[0];
  50.          }
  51.       }
  52.  
  53.       return var1;
  54.    }
  55.  
  56.    public FieldSetModel getFields() {
  57.       if (this.fields == null) {
  58.          this.fields = new FieldSetModel(this);
  59.       }
  60.  
  61.       return this.fields;
  62.    }
  63.  
  64.    public final MemberModel[] getMembers() {
  65.       if (this.members == null) {
  66.          if (this.isArray()) {
  67.             this.members = this.getArrayMembers();
  68.          } else {
  69.             Class var1 = ((MemberModel)this).getType();
  70.             if (ClassUtils.isSimple(var1)) {
  71.                this.members = new MemberModel[0];
  72.             } else {
  73.                this.members = this.getObjectMembers();
  74.             }
  75.          }
  76.       }
  77.  
  78.       return this.members;
  79.    }
  80.  
  81.    public MethodSetModel getMethods() {
  82.       if (this.methods == null) {
  83.          this.methods = new MethodSetModel(this);
  84.       }
  85.  
  86.       return this.methods;
  87.    }
  88.  
  89.    public final Object getObject() {
  90.       try {
  91.          return this.tryGetObject();
  92.       } catch (IllegalAccessException var1) {
  93.          return null;
  94.       }
  95.    }
  96.  
  97.    protected MemberModel[] getObjectMembers() {
  98.       return this.getStandardMembers();
  99.    }
  100.  
  101.    public PropertySetModel getProperties() {
  102.       if (this.properties == null) {
  103.          this.properties = new PropertySetModel(this);
  104.       }
  105.  
  106.       return this.properties;
  107.    }
  108.  
  109.    protected final MemberModel[] getStandardMembers() {
  110.       MemberModel[] var1 = null;
  111.       if (this.currentlyAllowsMembers()) {
  112.          ReflectionMemberMask var2 = ((MemberModel)this).getReflectionMemberMask();
  113.          int var3 = var2.countMemberSets();
  114.          boolean var4 = var2.hasFields();
  115.          boolean var5 = var2.hasProperties();
  116.          boolean var6 = var2.hasMethods();
  117.          boolean var7 = var2.hasSupers();
  118.          switch (var3) {
  119.             case 0:
  120.                var1 = new MemberModel[0];
  121.                break;
  122.             case 1:
  123.                if (var4) {
  124.                   var1 = this.getFields().getMembers();
  125.                }
  126.  
  127.                if (var5) {
  128.                   var1 = this.getProperties().getMembers();
  129.                }
  130.  
  131.                if (var6) {
  132.                   var1 = this.getMethods().getMembers();
  133.                }
  134.  
  135.                if (var7) {
  136.                   var1 = new MemberModel[]{this.getSuperClasses()};
  137.                }
  138.                break;
  139.             default:
  140.                var1 = new MemberModel[var3];
  141.                int var8 = 0;
  142.                if (var4) {
  143.                   var1[var8++] = this.getFields();
  144.                }
  145.  
  146.                if (var5) {
  147.                   var1[var8++] = this.getProperties();
  148.                }
  149.  
  150.                if (var6) {
  151.                   var1[var8++] = this.getMethods();
  152.                }
  153.  
  154.                if (var7) {
  155.                   var1[var8++] = this.getSuperClasses();
  156.                }
  157.          }
  158.       } else {
  159.          var1 = new MemberModel[0];
  160.       }
  161.  
  162.       return var1;
  163.    }
  164.  
  165.    public MemberModel getSuperClasses() {
  166.       if (this.superClasses == null) {
  167.          SuperClassSetModel var1 = new SuperClassSetModel(this);
  168.          if (var1.getMembers().length == 1) {
  169.             MemberModel var2 = var1.getMembers()[0];
  170.             var2.initializeNamePrefix("extends ");
  171.             this.superClasses = var2;
  172.          } else {
  173.             this.superClasses = var1;
  174.          }
  175.       }
  176.  
  177.       return this.superClasses;
  178.    }
  179.  
  180.    public boolean hasActualAndDeclaredType() {
  181.       return true;
  182.    }
  183.  
  184.    public boolean hasStandardMembers() {
  185.       return !this.isArray() && !ClassUtils.isSimple(((MemberModel)this).getType());
  186.    }
  187.  
  188.    public boolean hasValue() {
  189.       return true;
  190.    }
  191.  
  192.    public final void initializeObject(Object var1) {
  193.       try {
  194.          this.trySetObject(var1);
  195.       } catch (IllegalAccessException var2) {
  196.       }
  197.    }
  198.  
  199.    public boolean isArray() {
  200.       return ((MemberModel)this).getType().isArray();
  201.    }
  202.  
  203.    public boolean isNullable() {
  204.       return this.isWritable() && !this.isPrimitive();
  205.    }
  206.  
  207.    public boolean isObject() {
  208.       return true;
  209.    }
  210.  
  211.    public boolean isPrimitive() {
  212.       return ((MemberModel)this).getDeclaredType().isPrimitive();
  213.    }
  214.  
  215.    public boolean isReadable() {
  216.       return true;
  217.    }
  218.  
  219.    public boolean isWritable() {
  220.       return true;
  221.    }
  222.  
  223.    public void resetMembers() {
  224.       this.resetStandardMembers();
  225.    }
  226.  
  227.    protected void resetMethodsAndSuperClasses() {
  228.       this.methods = null;
  229.       this.superClasses = null;
  230.    }
  231.  
  232.    public final void resetStandardMembers() {
  233.       this.members = null;
  234.       this.methods = null;
  235.       this.fields = null;
  236.       this.properties = null;
  237.       this.superClasses = null;
  238.    }
  239.  
  240.    public final void setObject(Object var1) {
  241.       try {
  242.          this.trySetObject(var1);
  243.       } catch (IllegalAccessException var2) {
  244.          return;
  245.       }
  246.  
  247.       ((MemberModel)this).fireModelObjectChanged();
  248.    }
  249.  
  250.    public void setUseDeclaredType(boolean var1) {
  251.       ((MemberModel)this).resetReflectionMemberMask();
  252.       this.resetMethodsAndSuperClasses();
  253.       super.setUseDeclaredType(var1);
  254.    }
  255.  
  256.    protected abstract Object tryGetObject() throws IllegalAccessException;
  257.  
  258.    public void tryInstantiate() {
  259.       if (this.getObject() == null) {
  260.          this.setObject(ObjectUtils.getInstanceOf(((MemberModel)this).getType()));
  261.       }
  262.  
  263.    }
  264.  
  265.    protected abstract void trySetObject(Object var1) throws IllegalAccessException;
  266. }
  267.